package mathExpEvaluator.model;

import java.util.List;

import mathExpEvaluator.model.exception.InvalidMathValueException;
import mathExpEvaluator.model.operator.OperatorPriority;

public interface Operator {
	public final int PRIORITY_LEVEL_ADD = 0;
	public final int PRIORITY_LEVEL_MULTIPLY = 1;
	public final int PRIORITY_LEVEL_SIN = 2;
	public final int PRIORITY_LEVEL_SQUARE = 3;
	
	public MathValue apply(List<MathValue> ops);
//	public int getBracketCount();
	public int getPriorityLevel();
//	public int getPosition();
	public OperatorPriority getPriority();
	public Operant getBelongedOperant(String exp) throws InvalidMathValueException;
	public String getStringForm(List<MathValue> values);
}
